//
//  CYBaseNavController.swift
//  CYWeibo
//
//  Created by 媛 on 16/5/28.
//  Copyright © 2016年 yuan. All rights reserved.
//

import UIKit

//MARK:1.遵守手势协议
class CYBaseNavController: UINavigationController, UIGestureRecognizerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        //MARK: 解决：使用自定义按钮后，返回按钮的“边缘返回手势”丢失
        //MARK:2.设置代理
        //interactive：交互的
        self.interactivePopGestureRecognizer?.delegate = self

        //MARK: bug：在最顶级页面，“边缘返回手势”还会响应
        //在最顶级页面拖动边缘返回手势，再跳转下一个页面时，就无法跳转，要再次拖动边缘返回手势
    }

    //MARK: 解决：实现手势协议的代理方法
    //一般协议方法返回值为 “Bool” 类型，表示：如果返回true  表示对象能正常工作
    //                                   如果返回false  对象就不能正常工作
    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
       
//        if childViewControllers.count > 1 {
//            //进入子页面
//            return true
//        }
//        return false
        return childViewControllers.count > 1
        
    }
    
    
    //MARK: 重写push方法
    //CYBaseNavController(rootViewController: vc) ==> 内部会进行push操作 ==> 压栈
    override func pushViewController(viewController: UIViewController, animated: Bool) {
        
//        print("前\(childViewControllers.count)")
        //变量名 和 方法名 最好不要重名
        var backTitle = "返回"
        
        if childViewControllers.count > 0 {
            //如果是顶级页面
            if childViewControllers.count == 1 {
                backTitle = childViewControllers.first?.title ?? "返回"
            }
            let backBtn = UIBarButtonItem(imageName: "navigationbar_back_withtext", title: backTitle, target: self, action: #selector(popToVC))
            viewController.navigationItem.leftBarButtonItem = backBtn
            //跳转后隐藏底部
            viewController.hidesBottomBarWhenPushed = true
        }
        //重写super，可以让导航栏按钮标签栏按钮出现，不写 就会消失
        //super会push出一层子控制器
        super.pushViewController(viewController, animated: animated)
//        print(childViewControllers.count)

    }
    
    @objc private func popToVC() {
    
        popViewControllerAnimated(true)
    }
}
